package kr.pe.johnkim.app.mobile.rest.service;

import kr.pe.johnkim.app.domain.MyHistoryCategory;
import kr.pe.johnkim.app.domain.MyHistoryItem;

import java.util.List;

/**
 * @author : johnkim <cale9797@gmail.com / Bettersoft Inc,.>
 * @Date : 12. 2. 1
 */
public interface MyHistoryCategoryService {
    /**
     * 카테고리 중복을 확인 한다.
     *
     * @param myHistoryCategory
     * @return MyHistoryCategory
     */
    public MyHistoryCategory checkDuplication(MyHistoryCategory myHistoryCategory);

    /**
     * 카테고리를 등록 한다.
     *
     * @param myHistoryCategory
     * @return True or False
     */
    public boolean registerCategory(MyHistoryCategory myHistoryCategory);

    /**
     * 카테고리 목록을 가져 온다.
     *
     * @param myHistoryCategory
     * @return List<MyHistoryCategory>
     */
    public List<MyHistoryCategory> selectCategoryList(MyHistoryCategory myHistoryCategory);

    /**
     * 카테고리 전체 갯수를 가져 온다.
     *
     * @param myHistoryCategory
     * @return MyHistoryCategory
     */
    public MyHistoryCategory selectCategoryCount(MyHistoryCategory myHistoryCategory);

    /**
     * 카테고리 상세 정보를 가져 온다.
     *
     * @param myHistoryCategory
     * @return MyHistoryCategory
     */
    public MyHistoryCategory selectCategory(MyHistoryCategory myHistoryCategory);

    /**
     * 카테고리 내용을 수정 한다.
     *
     * @param myHistoryCategory
     * @return True or False
     */
    public boolean updateCategory(MyHistoryCategory myHistoryCategory);

    /**
     * 카테고리를 비 활성화 한다.
     *
     * @param myHistoryCategory
     * @return True or False
     */
    public boolean updateDeactivateCategory(MyHistoryCategory myHistoryCategory);

    /**
     * 카테고리를 즐겨 찾기에서 등록 한다.
     *
     * @param myHistoryCategory
     * @return True or False
     */
    public boolean updateFavoriteCategory(MyHistoryCategory myHistoryCategory);

    /**
     * 카테고리를 즐겨 찾기에서 등록 해제 한다.
     *
     * @param myHistoryCategory
     * @return True or False
     */
    public boolean updateDeactivateFavoriteCategory(MyHistoryCategory myHistoryCategory);

    /**
     * Category Analysis 화면에서 출력할 item 목록을 가져 온다.
     *
     * @param myHistoryItem
     * @return List<MyHistoryItem>
     */
    public List<MyHistoryItem> selectItemListForCategoryAnalysis(MyHistoryItem myHistoryItem);

    /**
     * Group 의 Category 목록을 가져 온다.
     *
     * 비활성의 목적으로 사용 한다.
     *
     * @param myHistoryCategory
     * @return
     */
    public List<MyHistoryCategory> selectCategoryListForGroup(MyHistoryCategory myHistoryCategory);
}
